package com.kcloud.commons.tools.codebuilder;


import com.kcloud.commons.tools.codebuilder.toolkit.DBTable;
import com.kcloud.commons.tools.codebuilder.toolkit.DBUtils;
import com.squareup.javapoet.JavaFile;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 代码生成器
 */
public interface CodeBuilder {


    String entityBasePackage = "entity";
    String repositoryBasePackage = "dao";

    default List<JavaFile> generate(String[] tables){
        return Arrays.stream(tables).map(table -> {
            DBTable dbTable = DBUtils.getTable(getDataSource(), table);
            //生成实体对象
            return generateJavaFile(dbTable);
        }).collect(Collectors.toList());
    }

    /**
     * 获取数据源
     * @return
     */
    DataSource getDataSource();

    /**
     * 生成java文件
     * @param table
     * @return
     */
    JavaFile generateJavaFile(DBTable table);
}
